package com.example.demo01.picture_frame;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.util.TypedValue;
import android.view.ViewGroup;
import com.example.demo01.picture_frame.frame.BaseFrame;

/**
 * <p>
 *
 * </p>
 *
 * @author DONG.WANG17@HAND-CHINA.COM
 * @since 2024-11-10 21:46
 */
public class FrameUtils{

    /**
     * 使用自定义的相框
     * @param bitmap 图片
     * @param container 容器
     * @param frameClass 相框类
     * @param context 上下文对象
     */
    public static void useFrame(Bitmap bitmap,
                                ViewGroup container,
                                Class<? extends BaseFrame> frameClass,
                                Context context) {
        try {
            BaseFrame frame = frameClass.getDeclaredConstructor(Context.class).newInstance(context);
            // 设置相框内容
            frame.setBitmap(bitmap);  // 设置相框内容
            // 确保容器的 LayoutParams 不为空
            container.addView(frame);
        }catch (Exception e){
            Log.e("FrameView", "Failed to use frame: " + frameClass.getName(), e);
        }
    }

    /**
     * 将 dp 值转换为 px
     * @param context 上下文对象
     * @param dp 值
     * @return 像素值
     */
    public static int dpToPx(Context context, float dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());
    }

    /**
     * 获取屏幕宽度
     * @param context
     * @return
     */
    public static int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }

    /**
     * 获取屏幕高度
     * @param context
     * @return
     */
    public static int getScreenHeight(Context context) {
        return context.getResources().getDisplayMetrics().heightPixels;
    }
}
